home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / uhren & terminkalender / organizer / reminderv5.9 / reminder.guide (.txt) < prev    next >
Amigaguide Document  |  1996-04-07  |  26KB  |  480 lines

  1. @database REMINDER
  2. @author "Ebbe Holleris Petersen"
  3. @$VER: Reminder.guide 5.9 (15.12.94)
  4. @node MAIN
  5. @title "Reminder Help"
  6.                                   Reminder V5.9
  7.                  Copyright 
  8.  1991-94 by Ebbe Holleris Petersen
  9.                         Official release of version 5.9
  10.                               Release date 15/12-94
  11.                                 E-mail: eep@sbi.dk
  12.                @{" Introduktion                                      " link HELP_INTRO }
  13.                @{" What is Reminder?                                 " link HELP_WHATISREM }
  14.                @{" How to invoke Reminder and what it does           " link HELP_INVOKEREMINDER }
  15.                @{" The input window                                  " link HELP_INPUT }
  16.                @{" The setup window                                  " link HELP_SETUP }
  17.                @{" The alarm window                                  " link HELP_ALARM }
  18.                @{" The message window                                " link HELP_MESSAGE }
  19.                @{" Reminder's config- and datafile                   " link HELP_CFG }
  20.                @{" Facilities to be added in future versions         " link HELP_ADDED }
  21.                @{" What to do about bugs, criticism, suggestions etc." link HELP_WHATTODO }
  22.                @{" Credits                                           " link HELP_CREDITS }
  23. @endnode
  24. @node HELP_INTRO "Introduction"
  25.   INTRODUCTION
  26.   Reminder is Copyright 
  27.  1991-94 by Ebbe Holleris Petersen, but can be
  28.   freely distributed, providing that the following rules are respected:
  29.     - No change is made to the program nor to the accompanying 
  30.       documentation.
  31.     - The package is always distributed in its complete form consisting of
  32.       8 files: Reminder.68000, Reminder.68020+, Reminder.data, Changes,
  33.       Reminder.guide, Reminder.info, Reminder.guide.info and Changes.info.
  34.     - Every form of distribution is allowed and encouraged, but no fee can
  35.       be charged for this program except for, possibly, the cost of
  36.       magnetic media and/or disk duplication and shipping.
  37.     - Inclusion in PD software libraries such as Fish Disks is allowed,
  38.       provided the fees charged for these disks are comparable with those
  39.       charged by Fred Fish.
  40.     - The program cannot be distributed in any commercial product without
  41.       the written consent of the author.
  42.   By copying, distributing and/or using the program you indicate your
  43.   acceptance of the above rules.
  44.   Also remember that this program is supplied 'as is': the entire risk as
  45.   to the quality of the program is to the user. In no event will the
  46.   author be liable for direct or indirect damage or loss resulting from
  47.   the use of this program.
  48.   If you are the kind of person who just has to pay for the programs you
  49.   use, I suggest you donate whatever amount you find will make you feel
  50.   better to GreenPeace or WWF. The only thing I ask for is ideas and
  51.   suggestions for additional features and improvements of Reminder. See
  52.   @{" What to do about bugs, criticism, suggestions etc." link HELP_WHATTODO } for info of how to
  53.   get in touch with me if you have any.  Enjoy.
  54. @endnode
  55. @node HELP_WHATISREM "What is Reminder"
  56.   WHAT IS REMINDER?
  57.   I have a tendency to forget that there is a world around me and that
  58.   time keeps running, when I am working with my A2000. Or in other words:
  59.   Me and the rest of the world have a tendency to get out of sync you
  60.   might say.
  61.   I therefore decided to write a small commodity that would pop up now and
  62.   then to remind me of the things I tended to forget. The result of this
  63.   mental exercise I decided to call Reminder.
  64.   So what does it do? Reminder keeps an eye on a list of messages and
  65.   commands, which the user (you) wants to be shown and/or executed at a
  66.   specific time or time intervals.
  67.   Any or all of the timeparameters  can be wildcards. Once every minute
  68.   the list is checked, and if a match between the systemclock and a time
  69.   specification is found a window will pop up, and the message(s) will be
  70.   shown and/or the command(s) will be executed.
  71.   Because Reminder is supposed to run as a backgroundprocess, it is
  72.   designed to be memory efficient and use as little CPU time as possible.
  73.   Should you however be the owner of an unexpanded A500, or for any other
  74.   reason NOT want the program to run continuous, it is possible to make it
  75.   show all messages for today at once, and then die (when using this
  76.   option no commands will be executed).
  77. @endnode
  78. @node HELP_INVOKEREMINDER "How to invoke Reminder and what it does"
  79.   HOW TO INVOKE REMINDER AND WHAT IT DOES
  80.   Reminder is run from the CLI simply by typing:
  81.     [RunBack] Reminder [X] [Y] [MODE=RUN/CHECK/CLI]
  82.   Running Reminder without any options is equivalent to:
  83.     Reminder X=372 Y=0 MODE=RUN
  84.   Commandline options overrides default values, and values found in the
  85.   configfile.
  86.   Reminder (and Reminder.info) can also be put in the WBStartup drawer.
  87.   In this case X, Y and MODE can be added as tool types in the icon.
  88.                  >>> IF YOU HATE TO READ LONG MANUALS <<<
  89.   take a break here, run Reminder and try selecting 'alarm', 'input' or
  90.   'setup' from Reminders menu. This should give you an idea of what the
  91.   program does (it may be an idea to copy the file Reminder.data to S:
  92.   first though).
  93.   (Ok, break over...)
  94.   Reminder is very tolerant when it comes to low memory conditions - it
  95.   simply remembers what it wasn't able to do, and then tries again (about
  96.   once every second) until it succeeds. Only a few things will make
  97.   Reminder close down and exit:
  98.     - Not being able to open the needed libraries (intuition V36+,
  99.       graphics V36+, commodities V36+, gadtools V36+, diskfont V33+ or
  100.       reqtools V38+).
  101.     - Not being able to allocate space for it's datafile.
  102.     - Not being able to install it's inputhandler.
  103.     - Not being able to open input and timer device.
  104.   Since none of these situations are likely to happen you will probably
  105.   not experience any problems.
  106.   When Reminder is run it attempts to open the file ENV:Reminder/Config.
  107.   If found it will load setup info and name of the datafile to use. Any
  108.   commandline options will override the options found in the configfile.
  109.   It then attempts to open the datafile specified in configfile, or the
  110.   file S:Reminder.data if no configfile was found. If no configfile and/or
  111.   datafile is found, or if the file(s) are not Reminder file(s) Reminder
  112.   will state the fact, and then use it's default setup, and start with an
  113.   empty list of messages/commands.
  114.   If any of the messages/commands read from the datafile have become
  115.   obsolete, i.e. were to be shown yesterday or before yesterday and never
  116.   again, they will be deleted from the message/command list.
  117.   Reminder will then attempt to save the updated list, thereby deleting
  118.   the existing one. This operation will be repeated every 24 hours (at
  119.   midnight).
  120.   Note that as of version 5.7, Reminder no longer can read V2.0 datafiles.
  121.   Reminder V3.0 - V5.8 config and datafiles doesn't need any special
  122.   attention. The old config and datafile will (if needed) automatically
  123.   be updated the first time Reminder V5.9 is run. If you have been using
  124.   Reminder V5.6 (or an older version) and the file S:Reminder.cfg is
  125.   found, it will be deleted, and the files ENVARC:Reminder/Config and
  126.   ENV:Reminder/Config will be created in stead.
  127.   Unless told otherwise in it's configfile, Reminder by default opens a
  128.   small clock in the upper right corner of the Workbench screen, showing
  129.   the time, and how much fast & chip memory is available. If you don't
  130.   like the position of the clock window, it can be moved to a different
  131.   position, just like any other window.
  132.   Likewise it's contents can be changed or Reminder can be instructed not
  133.   to open any clock window at all.
  134.   You can quit Reminder by:
  135.    - selecting 'Quit' in the menu.
  136.    - clicking on the close gadget in the clock window.
  137.    - or by pressing <selected hotkey sequence>+'q' (default: <Ctrl>+
  138.      <Left Alt>) simultaneously.
  139.    - or remove it using the commodities control program ExChange.
  140.   (if any other Reminder windows are open they will be closed to).
  141. @endnode
  142. @node HELP_INPUT "The input window"
  143.   THE INPUT WINDOW
  144.   The Input window can be opened in two ways:
  145.     - if the clock window is open, by selecting 'Input' in it's menu.
  146.     - by pressing <selected hotkey sequence>+<i> simultaneously when no
  147.       Reminder windows (except the clock window) are open.
  148.   This window consists of two main parts: A calendar showing two months,
  149.   and a list of messages/commands, and the time when they are to be shown/
  150.   executed.
  151.   First time the input window is opened, the calendar will show the month
  152.   in which we are (today will be highlighted), and the following month.
  153.   The message/command list will contain all messages/commands to be shown/
  154.   executed today (if any), and the first empty message/command will be
  155.   highlighted.
  156.   You use the calendar in the following way:
  157.     Next month:
  158.       Will advance the calendar one month. The same can be achieved by
  159.       pressing <Left Shift> or <Right Shift> and cursorkey 'up'.
  160.     Prev month:
  161.       Will recede the calendar one month. The same can be achieved by
  162.       pressing <Left Shift> or <Right Shift> and cursorkey 'down'.
  163.     Today:
  164.       Resets the calendar to the present date.
  165.     Pointing to a date in the calendar and pressing the left mousebutton
  166.     selects (highlights) it, and displays any messages/commands for this
  167.     date. The list will be sorted according to when the messages/commands
  168.     are to be shown/executed.
  169.   After having selected a date in the above described way, you have a list
  170.   of messages/commands ready to be edited. This is done in the following
  171.   way:
  172.     To select a message/command to edit, you press the cursorkeys 'up' and
  173.     'down' until the one you want to edit is highlighted. To add a new
  174.     message/command just select the last (empty) entry in the list.
  175.     Pressing the cursorkeys 'left' or 'right' or the key 'Return' will
  176.     make reminder enter edit mode, and allow you to edit the selected
  177.     message. The same keys are used to select what parameter to edit (or
  178.     point and click).
  179.     A message/command can also be selected with the mouse. Selecting a
  180.     highlighted message/command will enter edit mode.
  181.     In edit mode, the cursorkeys 'up' and 'down' have a different
  182.     function. Pressing cursorkey 'up' or 'down', will now change the
  183.     highlighted timeparameter, by moving through the legal range of values
  184.     + wildcard. In stead of the cursorkey you can also enter minutes,
  185.     hours, days and months directly using the numeric keys (and ? for
  186.     wildcard).
  187.     To delete a message from the list use the following procedure:
  188.       - Select the message to be deleted.
  189.       - 1) Press 'Delete' OR
  190.       - 2) Enter edit mode.
  191.          - clear the fields 'Message' AND 'Command'.
  192.          - Leave edit mode, and the message will be removed from the list
  193.            (no matter what timespecification has been entered.)
  194.     Pressing the mouse-menu-button, 'ESC' or 'shift+return' in edit mode
  195.     will make Reminder leave edit mode, but while the mouse-menu-button
  196.     and 'ESC' ignores any changes made, 'shift+return' keeps them.
  197.     The timespecification consists of the following:
  198.     From and To:
  199.       These fields specify a timeinterval in which the message/command is
  200.       to be shown/executed.
  201.       Note that by careful manipulation it is possible to select a non
  202.       existing date like 31 feb. Also there is made no attempt to check if
  203.       the From date lies before the To date. It is left entirely up to the
  204.       user to enter meaningful data, so: Garbage in = Garbage out. It
  205.       won't harm, but it won't work either!!!.
  206.     Pattern and Weekdays:
  207.       These fields specify at what time, date and weekdays the message/
  208.       command is to be shown/executed. If 'From' and 'To' are specified
  209.       'Pattern' only applies to this interval. Se note above.
  210.     Day Count:
  211.       Tells Reminder the maximum number of times to show/execute a
  212.       message/command within one day. This is very useful, for example if
  213.       you want a message/command to be shown/executed as soon as the
  214.       program is run.
  215.       You would do this by setting hour and minute to wildcards, but then
  216.       the message/command would be shown/executed once every minute. To
  217.       avoid this, set count to 1 (one), and it will be shown only once.
  218.     Total Count:
  219.       Tells Reminder the total number of times to show/execute a message/
  220.       command over one or several days.
  221.       Note that reminder must be allowed to update it's datafile each time
  222.       it has shown/executed a message/command that has a Total Count !=
  223.       '??'. So if Reminders datafile or the disk it is located on is write
  224.       protected this option will *NOT* work properly.
  225.     Message:
  226.       The message you want to be shown (if any). It can be up to 70
  227.       characters long.
  228.       Note that you may enter a message, a command *OR* both for the same
  229.       timespecification.
  230.       Message is a stringgadget, and therefore all the standard key
  231.       combinations like <Right amiga>+<q> to undo any changes, <Right
  232.       amiga>+<x> to clear the message and so forth will work. Likewise for
  233.       command, and any other stringgadget used in Reminder.
  234.     Command:
  235.       This line will be executed as a command. You type a command the same
  236.       way you would do from the CLI. If a command is in your system search
  237.       path you don't have to specify the whole path.
  238.         example#1: fh0:tools/play fh0:sounds/dingdong
  239.         example#2: fh0:utilities/backup fh0: fh1: dh0:
  240.         example#3: "fh0:space in name" arg1 arg2 arg3
  241.       The command line may be up to 240 characters long.
  242.       Do *NOT* make any assumptions about the order in which messages/
  243.       commands that are to be shown/executed at the same time will be
  244.       shown/executed.
  245.   Copy:
  246.     Will make a copy of the highlighted (or selected) message.
  247.   Show all:
  248.     Will display a complete list of all messages/commands presently in the
  249.     system. This list can also be edited.
  250.   Ok or Close gadget:
  251.     Will quit the input window, and if you have modified, added or deleted
  252.     any messages/commands, Reminder will attempt to save the modified
  253.     datafile.
  254.   Cancel or ESC-key (if not in edit mode):
  255.     Will undo any changes made since the input window was opened, and then
  256.     quit the input window.
  257.   To see examples of messages and use of wildcards, an examples datafile
  258.   (Reminder.data) is supplied. Copy this file to your S: directory, or
  259.   assign S: to whereever the file is located. Then simply run Reminder.
  260. @endnode
  261. @node HELP_SETUP "The setup window"
  262.   THE SETUP WINDOW
  263.   The setup window can be opened in four ways:
  264.     - If the clock window is open, by selecting 'Setup' in it's menu.
  265.     - by pressing 'show interface' in the commodities control program
  266.       'ExChange'.
  267.     - by pressing <selected hotkey sequence>+<s> simultaneously when no
  268.       Reminder windows (except the clock window) are open.
  269.     - by running a second copy of Reminder.
  270.   The setup window will then pop up showing the following options:
  271.   Clock format:
  272.     This option tells Reminder what to show in the clock window. There are
  273.     some 48 different combinations to chose from. Note that seconds can't
  274.     be selected unless you also have selected time, and seconds will
  275.     automatically be deselected should you deselect time. Deselecting all
  276.     options will quit the clock window.
  277.     Default: Chip, Fast and Time.
  278.   Hotkey sequence:
  279.     Allows you to select your very own hotkey sequence, if you for some
  280.     reason don't like the default one. This hotkey sequence is used in
  281.     connection with 'a', 'i', 's' and 'q' to activate the alarm, setup and
  282.     input window and to quit Reminder. It can be changed any time, and the
  283.     changes will take effect as soon as the setup window is closed.
  284.     Note that no special effort has been made to keep the user from
  285.     choosing impractical or downright stupid hotkey sequences like <CTRL>+
  286.     <LEFT AMIGA>+<RIGHT AMIGA> or no hotkey sequence at all.
  287.     Default: <CTRL>+<LEFT ALT>.
  288.   Run/Check/Cli check (commandline options or tool types:
  289.     MODE=run/check/cli):
  290.     If it is set to "Check" Reminder will check its message list, and if
  291.     any messages are to be shown today, it will open a window and display
  292.     them. Commands are neither shown nor executed, when using this option.
  293.     When the user close's the message window Reminder will exit and die.
  294.     The option "Cli check" essentially does the same, but it uses the CLI
  295.     from which it was run to display any messages, and then dies
  296.     immediately. 
  297.     The option "Run" of cause means, that Reminder will keep on running,
  298.     and only show messages and execute commands at the specified times.
  299.     If you change it from 'Run' to 'Check' or 'Cli check', the change won't
  300.     take effect until the next time you run Reminder. Once you have done
  301.     that, you have to run Reminder with MODE=run to change it again, since
  302.     otherwise Reminder will quit before you can change it.
  303.     Default: Run.
  304.   Clock to front/No clock to front:
  305.     "Clock to front" tells Reminder that Whenever the clock window is
  306.     obscured by an other window on the Workbench it is to be moved in
  307.     front, thereby always being visible. "No clock to front" means ...
  308.     well guess. The "Clock to front" option is only available if the
  309.     layers library was found.
  310.     Default: Clock to front.
  311.   WB screen to front/Flash screen:
  312.     This option tells Reminder how to signal that it has a message for
  313.     you: Move the Workbench screen to the front, or flash all screens.
  314.     default: WB screen to front.
  315.   Font:
  316.     Allows you to select the font that Reminder will use, for all its
  317.     windows. When you change the font, the change will take effect for the
  318.     clock window (if open) immediately, and for alarm, input, setup and
  319.     message windows next time they are opened.
  320.     NOTE that if a window gets to big using the specified font, Reminder
  321.     defaults to topaz 8.
  322.     Default: Default screen font.
  323.   Priority:
  324.     This is the priority, with which Reminder is running. Can be in the
  325.     range -10 to 10, but should be in the range 1 to 5.
  326.     Default: 5.
  327.   Clock x & Clock y (commandline options and tool types: X= & Y=):
  328.     These are the coordinates of the upper left corner of the clock
  329.     window.
  330.     Simply type in the coordinates where you which the clock window to be
  331.     displayed. Illegal values will be changed to closest legal value. If
  332.     the clock window is moved Clock x and Clock y will be updated to
  333.     reflect the new position.
  334.     Default: X=372, Y=0.
  335.   Filename:
  336.     This tells Reminder under which name to save/load/reload its datafile.
  337.     A empty string will not be accepted.
  338.     Default: S:Reminder.data
  339.   Alarm message:
  340.     This is the string to be displayed when you use Reminders alarm
  341.     facility.
  342.     Default: Alarm.
  343.   Alarm command:
  344.     This command will be executed when you use Reminders alarm facility.
  345.     (No default command).
  346.   Cancel or ESC-key:
  347.     Reset options to what they were before setup window was opened. Then
  348.     exit setup window.
  349.   Ok or Close gadget:
  350.     Use present setup. Then exit setup window.
  351.   Save:
  352.     Save present setup to configfile. Use present setup, and exit setup
  353.     window.
  354. @endnode
  355. @node HELP_ALARM "Alarm"
  356.   THE ALARM WINDOW
  357.   The Alarm window can be opened in two ways:
  358.     - If the clock window is open, by selecting 'Alarm' in it's menu.
  359.     - by pressing <selected hotkey sequence>+<a> simultaneously when no
  360.       Reminder windows (except the clock window) are open.
  361.   The alarm window will then open, displaying the number of minutes until
  362.   the next alarm, or be empty if no alarm is set. Just change this number
  363.   to any other number (0-999) you like, then close the window by pressing
  364.   'Ok'. Pressing 'Cancel' will cancel the alarm function, no matter what
  365.   number was entered. After the requested number of minutes has passed,
  366.   the message/command specified in the setup window will be shown/
  367.   executed.
  368.   If the alarm window is opened a second time, before the requested number
  369.   of minutes has passed, the stringgadget will contain the number of
  370.   minutes left before the alarm, and the "countdown" will be halted until
  371.   the alarm window is closed again.
  372.   You could of cause use the normal message+timespecification in stead of
  373.   this feature, but often what you need is to be reminded that a movie
  374.   begins in 15 minutes or your pizza is finished in 20 minutes etc. For
  375.   situations like this the alarm function is both easier and faster to
  376.   use.
  377.   Since this type of request is considered a "second class" request,
  378.   Reminder won't save it in it's datafile. Therefore it will be forgotten
  379.   after a reset. Some would call this a drawback, I call it a feature.
  380. @endnode
  381. @node HELP_MESSAGE "The message window"
  382.   THE MESSAGE WINDOW
  383.   The message window can only be opened by Reminder. It will do so
  384.   whenever it has a message for you. Up to 6 messages can be shown at
  385.   once. If there are more than 6 messages, you can use the scrollbar or
  386.   <arrow up> and <arrow down> to scroll through them.
  387.   The window will stay open until you click a mousebutton anywhere in it.
  388.   After the message window has been opened, Reminder will add additional
  389.   messages to those already shown, until the user closes the window. It
  390.   is closed by pressing a mouse anywhere in the window, or by pressing
  391.   the ESC key.
  392.   Whenever Reminder opens the message window, or adds new messages to
  393.   those already shown, it attempts to open the input device, and send a
  394.   "harmless" message through the device. As a harmless message I chose a
  395.   mousemove event with dx,dy = 0,0. The reason for this is:
  396.     - When intuition opens a window it also activates the display. Any
  397.       screenblanker (DMouse, QMouse etc.) running, would not be notified
  398.       of this, since opening a window does not generate an event. So if
  399.       the screenblanker had deactivated the screen, when Reminder opened
  400.       it's message window, the screen would be reactivated without the
  401.       screenblanker being notified of this. It would therefore stay this
  402.       way instead of being deactivated again after a certain time.
  403.       A (fake) mousemove event, will make the screenblanker think that the
  404.       mouse was moved, and it therefore will activate the screen, and
  405.       deactivate it again after some time if the user is not using the
  406.       machine.
  407.     - When Reminder updates a already open message window, the display is
  408.       not activated, so if a screenblanker is running, and has deactivated
  409.       the display, the user would not be able to see the new message(s)
  410.       (The user may still be able to see the screen even if he is not
  411.       using the machine).
  412.   The fake mousemove event was the most neutral event I could come up
  413.   with, that would mean nothing to any program except a screenblanker. In
  414.   the (very) unlikely event that any of your programs start doing things
  415.   on there own, because they interpret it as a command, notify me of the
  416.   problem, and I will try to come up with a better "harmless event".
  417. @endnode
  418. @node HELP_CFG "Reminder's config- and datafile"
  419.   REMINDER'S CONFIG- AND DATAFILE
  420.   The files generated by Reminder are ASCII files, which can be viewed
  421.   with any texteditor or textviewer. You can therefore also change them by
  422.   using an editor. This is NOT encouraged, since Reminder only makes a
  423.   limited check to see if the data it reads is valid. An error in the
  424.   datafile, may therefore go undetected, and Reminders behavior will be
  425.   unpredictable, and very likely NOT a pretty sight.
  426.   Before using a config- or datafile Reminder makes sure, that it really
  427.   is a Reminder file. If not the user is informed, the file ignored, and
  428.   no harm is done.
  429.   If a datafile is partly damaged, Reminder will recover as much of the
  430.   file as possible, and ignore the rest.
  431.   Note that if you like the default values for format, hotkey etc. you
  432.   don't need a config file (if Reminder doesn't find a config file it will
  433.   simply use it's built-in default values). The datafile just have to be
  434.   saved under the (default) name S:Reminder.data.
  435.   The first line in a data or configfile identifies the file as a Reminder
  436.   Vx.x file. Note however, that the version number not necessarily
  437.   corresponds to the version number displayed by Reminder (Reminder V5.9
  438.   generates V5.7 datafiles and V5.5 configfiles). The version number
  439.   simply states the oldest version of Reminder that will work with this
  440.   particular data or configfile.
  441. @endnode
  442. @node HELP_ADDED "Facilities to be added in future versions"
  443.   FACILITIES TO BE ADDED IN FUTURE VERSIONS.
  444.   - Show/Highlight holidays.
  445.   - Option that instructs Reminder to show all messages that should have
  446.     been shown since last time Reminder was run.
  447.   - Keyboard combinations to select dates in the calendar.
  448.   - Option to instruct Reminder to show a message with a specific interval,
  449.     for example every 7 minutes and 12 seconds.
  450. @endnode
  451. @node HELP_WHATTODO "What to do about bugs, criticism, suggestions etc."
  452.   WHAT TO DO ABOUT BUGS, CRITICISM, SUGGESTIONS ETC.
  453.   If you want to get in touch you can reach me on the following address:
  454.     Ebbe Holleris Petersen
  455.     Vesterbrogade 120D, st.th.
  456.     1620 K
  457. benhavn V
  458.     Denmark
  459.     Phone:  +45 31313010
  460.     E-mail: eep@sbi.dk
  461. @endnode
  462. @node HELP_CREDITS "Credits"
  463. CREDITS
  464.   Finally ThanX to my friends Flemming Jacobsen, Thomas Gade, Thomas
  465.   Veber Jensen, Anders Melchiorsen and everybody else who has helped me
  466.   test Reminder, and for there various suggestions for changes and
  467.   improvements. This program would not have had half it's facilities
  468.   without them, nor would it have been so easy to use(?).
  469.   Also ThanX to the following persons, whose source code and/or programs
  470.   have served as examples and inspiration when I wrote Reminder:
  471.   Matthew Dillon, Steve Drew, Carlo Borreo & Cesare Dieni
  472.     for Shell4.01
  473.   Brian Moats
  474.     for Mach1.6
  475.   Rob Peck, Dan Barrett & Tim Maffett
  476.     for Runback
  477.   Commodore for blowing those PC's out of the water by giving us the
  478.   *Amiga*
  479. @endnode
  480.